perm filename SM[CH2,ALS] blob sn#283552 filedate 1977-05-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Routine to smooth data in SIGL table both diagonally and adjacently
C00008 ENDMK
C⊗;
;Routine to smooth data in SIGL table both diagonally and adjacently
	BLOCK ↑D112
TEMP:	BLOCK ↑D113

SMS25:	MOVEI X3,↑D25(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,-↑D25(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS25A:	MOVEI X3,-↑D25(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,↑D25(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS15:	MOVEI X3,↑D15(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,-↑D15(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS15A:	MOVEI X3,-↑D15(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,↑D15(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS5:	MOVEI X3,5(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,-5(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS5A:	MOVEI X3,-5(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,5(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS1:	MOVEI X3,1(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,-1(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SMS1A:	MOVEI X3,-1(X1)
	ADDM Q,TEMP(X3)
	MOVEI X3,1(X2)
	ADDM Z,TEMP(X3)
	POPJ PDP,

SM:	MOVEI P,3		;Phase number
	MOVEI K,↑D225		;Table selection
SM1:	MOVE A,PHASES(P)
	ADD A,K
	SETZM TEMP-↑D112
	HRLZI U1,TEMP-↑D112
	HRRI U1,TEMP-↑D111
	BLT U1,TEMP+↑D112
	MOVEI U1,1		;First level start
SM3:	MOVEI U2,1
SM4:	MOVEI U3,2
SM5:	MOVE X1,U1
	IMULI X1,3
	ADD X1,U2
	IMULI X1,5
	ADD X1,U3
	MOVN X2,X1
	ADD X1,A
	ADD X2,A
	MOVS Z,SIGL11(X1)
	ADD Z,SIGL11(X2)
	MOVS Q,Z
	ADDM Q,TEMP(X1)
	ADDM Z,TEMP(X2)
	LSH Q,-3		;Divide by 8
	AND Q,[37777,,37777]
	LSH Z,-3
	AND Z,[37777,,37777]
	CAIGE U1,1
	PUSHJ PDP,SMS15		;Outward adjacent smoothing, first term
	PUSHJ PDP,SMS15A	;Inward adjacent smoothing, first term
	CAIGE U2,1		;Repeat for second term
	PUSHJ PDP,SMS5
	PUSHJ PDP,SMS5A
	CAIGE U3,2		;Repeat for third term
	PUSHJ PDP,SMS1	
	PUSHJ PDP,SMS1A
	SOJGE U3,SM5
	SOJGE U2,SM4
	SOJGE U1,SM3
	HRLZI U1,TEMP-↑D22	;Move results back into SIGL space
	HRRI U1,SIGL11-↑D22(A)
	BLT U1,SIGL11+22(A)
	SETZM TEMP-↑D22		;and clear TEMP space
	HRLZI U1,TEMP-↑D22
	HRRI U1,TEMP-↑D21
	BLT U1,TEMP+↑D22
	SUBI K,↑D45
	JUMPGE K,SM1
	MOVE A,PHASES(P)	;Start on second level tables
	MOVEI K,↑D125
SM21:	ADD A,K
SM22:	MOVEI U1,2
SM23:	MOVEI U2,2
SM24:	MOVEI U3,2
SM25:	MOVE X1,U1
	MOVE X1,U1
	IMULI X1,5
	ADD X1,U2
	IMULI X1,5
	ADD X1,U3
	MOVN X2,X1
	ADD X1,A
	ADD X2,A
	MOVS Z,SIGL21(X1)
	ADD Z,SIGL21(X2)
	MOVS Q,Z
	ADDM Q,TEMP(X1)
	ADDM Z,TEMP(X2)
	LSH Q,-3
	AND Q,[37777,,37777]
	LSH Z.-3
	AND Z,[37777,,37777]
	CAIGE U1,2
	PUSHJ PDP,SMS25
	PUSHJ PDP,SMS25A
	CAIGE U2,2
	PUSHJ PDP,SMS5
	PUSHJ PDP,SMS5A
	CAIGE U3,2
	PUSHJ PDP,SMS1
	PUSHJ PDP,SMS1A
	SOJGE U3,SM25
	SOJGE U2,SM24
	SOJGE U1,SM23
	HRLZI U1,TEMP-↑D62
	HRRI U1,SIGL21-↑D62(A)
	BLT U1,SIGL21+62(A)
	SETZM TEMP-↑D62
	HRLZI U1,TEMP-↑D62
	HRRI U1,TEMP-↑D61
	BLT U1,TEMP+↑D62
	SUBI K,↑D125
	JUMPGE K,SM22
	MOVE A,PHASES(P)		;Start on third level
SM32:	MOVEI U1,7
SM33:	MOVEI U2,7
SM35:	MOVE X1,U1
	IMULI X1,↑D15
	ADD X1,U2
	MOVN X2,X1
	ADD X1,A
	ADD X2,A
	MOVS Z,SIGLF(X1)
	ADD Z,SIGLF(X2)
	MOVS Q,Z
	ADDM Q,TEMP(X1)	
	ADDM Z,TEMP(X2)
	LSH Q.-2
	AND Q,[77777,,77777]
	LSH Z,-2
	AND Z,[77777,,77777]
	CAIGE U1,↑D15
	PUSHJ PDP,SMS15
	PUSHJ PDP,SMS15A
	CAIGE U2,↑D15
	PUSHJ PDP,SMS1
	PUSHJ PDP,SMS1A
	SOJGE U2,SM35
	SOJGE U1,SM33
	HRLZI U1,TEMP-↑D112
	HRRI U1,SIGLF-↑D112(A)
	BLT U1,SIGLF+112(A)
	SOJGE P,SM1
	MOVEI U1,[ASCIZ /Full smoothing has been done.
/]
	 POPJ PDP,